(function ($) {
    // 默认配置
    var defaults = {
        source: '', // 数据源 URL
        field: 'name', // 显示字段
        primaryKey: 'id', // 主键字段
        pagination: true, // 是否分页
        pageSize: 10, // 每页条数
        multiple: false, // 是否多选
        selectOnly: true, // 是否只能选择
        placeholder: '请选择', // 占位符
        selected: null, // 已选中的值
        delay: 300, // 输入延迟
        ajaxParams: {}, // 额外的 AJAX 参数
        formatResult: null, // 自定义结果格式化函数
        formatSelection: null // 自定义选中项格式化函数
    };

    // Selectpage 插件
    $.fn.selectpage = function (options) {
        return this.each(function () {
            var $this = $(this);
            var settings = $.extend({}, defaults, options, $this.data());
            var isInitialized = $this.data('selectpage');

            // 如果已经初始化，则直接返回
            if (isInitialized) {
                return;
            }

            // 初始化
            init($this, settings);

            // 标记为已初始化
            $this.data('selectpage', true);
        });
    };

    // 初始化
    function init($element, settings) {
        var $input = $element;
        var $dropdown = $('<div class="selectpage-dropdown"></div>');
        var $results = $('<div class="selectpage-results"></div>');
        var $pagination = $('<div class="selectpage-pagination"></div>');

        // 构建下拉框
        $dropdown.append($results);
        if (settings.pagination) {
            $dropdown.append($pagination);
        }
        $('body').append($dropdown);

        // 绑定事件
        $input.on('input', function () {
            var query = $input.val();
            if (query.length >= 2) {
                loadData(query, 1);
            }
        });

        // 加载数据
        function loadData(query, page) {
            var params = {
                q: query,
                page: page,
                pageSize: settings.pageSize
            };
            $.extend(params, settings.ajaxParams);

            $.ajax({
                url: settings.source,
                data: params,
                success: function (response) {
                    renderResults(response.list);
                    if (settings.pagination) {
                        renderPagination(response.total, page);
                    }
                }
            });
        }

        // 渲染结果
        function renderResults(data) {
            $results.empty();
            $.each(data, function (index, item) {
                var $item = $('<div class="selectpage-item"></div>');
                $item.text(item[settings.field]);
                $item.data('item', item);
                $item.on('click', function () {
                    selectItem(item);
                });
                $results.append($item);
            });
        }

        // 渲染分页
        function renderPagination(total, currentPage) {
            var totalPages = Math.ceil(total / settings.pageSize);
            $pagination.empty();
            for (var i = 1; i <= totalPages; i++) {
                var $page = $('<span class="selectpage-page"></span>');
                $page.text(i);
                if (i === currentPage) {
                    $page.addClass('active');
                }
                $page.on('click', function () {
                    loadData($input.val(), $(this).text());
                });
                $pagination.append($page);
            }
        }

        // 选择项
        function selectItem(item) {
            if (settings.multiple) {
                // 多选逻辑
            } else {
                $input.val(item[settings.field]);
                $input.data('selected', item);
                $dropdown.hide();
            }
        }
    }
})(jQuery);